#define _CRT_SECURE_NO_WARNINGS

//#include <stdio.h>
//
//void PrintN(int N)
//{
//	if (N > 1)
//	{
//		PrintN(N - 1);
//	}
//
//	printf("%d\n", N);
//}
//
//int main()
//{
//	int N = 0;
//	scanf("%d", &N);
//
//	PrintN(N);
//
//	return 0;
//}





//#include <stdio.h>
//
//#define MAXN 10
//
//double f(int n, double a[], double x)
//{
//
//}
//
//int main()
//{
//    int n, i;
//    double a[MAXN], x;
//
//    scanf("%d %lf", &n, &x);
//    for (i = 0; i <= n; i++)
//        scanf("%lf", &a[i]);
//    printf("%.1f\n", f(n, a, x));
//    return 0;
//}




//#include <stdio.h>
//
//#define MAXN 10
//
//int Sum(int List[], int N)
//{
//    int i = 0;
//    int sum = 0;
//    for (i = 0; i < N; i++)
//    {
//        sum += List[i];
//    }
//
//    return sum;
//}
//
//int main()
//{
//    int List[MAXN], N, i;
//
//    scanf("%d", &N);
//    for (i = 0; i < N; i++)
//        scanf("%d", &List[i]);
//    printf("%d\n", Sum(List, N));
//
//    return 0;
//}



//#include <stdio.h>
//
//#define MAXN 10
//typedef float ElementType;
//
//ElementType Average(ElementType S[], int N)
//{
//    int i = 0;
//    ElementType sum = 0;
//    for (i = 0; i < N; i++)
//    {
//        sum += S[i];
//    }
//    return sum / N;
//}
//
//int main()
//{
//    ElementType S[MAXN];
//    int N, i;
//
//    scanf("%d", &N);
//    for (i = 0; i < N; i++)
//        scanf("%f", &S[i]);
//    printf("%.2f\n", Average(S, N));
//
//    return 0;
//}




//#include <stdio.h>
//
//#define MAXN 10
//typedef float ElementType;
//
//ElementType Max(ElementType S[], int N)
//{
//    int i = 0;
//    ElementType max = S[0];
//    for (i = 1; i < N; i++)
//    {
//        if (max < S[i])
//        {
//            max = S[i];
//        }
//    }
//    return max;
//}
//
//int main()
//{
//    ElementType S[MAXN];
//    int N, i;
//
//    scanf("%d", &N);
//    for (i = 0; i < N; i++)
//        scanf("%f", &S[i]);
//    printf("%.2f\n", Max(S, N));
//
//    return 0;
//}




//#include <stdio.h>
//#include <math.h>
//
//int is_equal(int n)
//{
//    int arr[10000] = { 0 };
//    int sum = 0;
//    int tmp = n;
//    while (tmp)
//    {
//        tmp /= 10;
//        sum++;
//    }
//    int i = 0;
//    for (i = 0; i < sum; i++)
//    {
//        arr[i] = n % 10;
//        n /= 10;
//    }
//    for (i = 0; i < sum; i++)
//    {
//        int j = 0;
//        for (j = i + 1; j < sum; j++)
//        {
//            if (arr[i] == arr[j])
//            {
//                return 1;
//            }
//        }
//    }
//    return 0;
//}
//
//int IsTheNumber(const int N)
//{
//    int i = 0;
//    for (i = 0; i < N / 2; i++)
//    {
//        if (pow(i, 2) == N)
//        {
//            int ret = is_equal(N);
//            if (ret)
//            {
//                return 1;
//            }
//        }
//    }
//    return 0;
//}
//
//int main()
//{
//    int n1, n2, i, cnt;
//
//    scanf("%d %d", &n1, &n2);
//    cnt = 0;
//    for (i = n1; i <= n2; i++) {
//        if (IsTheNumber(i))
//            cnt++;
//    }
//    printf("cnt = %d\n", cnt);
//
//    return 0;
//}


//#include <stdio.h>
//
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int sum = 0;
//
//	while (n)
//	{
//		n /= 10;
//		sum++;
//	}
//
//	printf("%d\n", sum);
//
//	return 0;
//}




//#include <stdio.h>
//
//int Factorial(const int N)
//{
//    if (N <= 0)
//    {
//        return 0;
//    }
//    if (N > 1)
//    {
//        return N * Factorial(N - 1);
//    }
//    else
//    {
//        return 1;
//    }
//}
//
//int main()
//{
//    int N, NF;
//
//    scanf("%d", &N);
//    NF = Factorial(N);
//    if (NF)  printf("%d! = %d\n", N, NF);
//    else printf("Invalid input\n");
//
//    return 0;
//}




//#include <stdio.h>
//
//int Count_Digit(const int N, const int D)
//{
//    int num = 0;
//    int i = 0;
//    if (N < 0)
//    {
//        int tmp1 = -N;
//        int tmp2 = -N;
//        int sum = 0;
//        while (tmp1)
//        {
//            tmp1 /= 10;
//            sum++;
//        }
//        for (i = 0; i < sum; i++)
//        {
//            if (tmp2 % 10 == D)
//            {
//                num++;
//            }
//            tmp2 /= 10;
//        }
//    }
//    else if (N == 0 && D == 0)
//    {
//        return 1;
//    }
//    else
//    {
//        int tmp1 = N;
//        int tmp2 = N;
//        int sum = 0;
//        while (tmp1)
//        {
//            tmp1 /= 10;
//            sum++;
//        }
//        for (i = 0; i < sum; i++)
//        {
//            if (tmp2 % 10 == D)
//            {
//                num++;
//            }
//            tmp2 /= 10;
//        }
//    }
//    return num;
//}
//
//int main()
//{
//    int N, D;
//
//    scanf("%d %d", &N, &D);
//    printf("%d\n", Count_Digit(N, D));
//
//    return 0;
//}




#include <stdio.h>

void Print_Factorial(const int N)
{
    if (N < 0)
    {
        printf("Invalid input\n");
    }
    else if(N == 0)
    {
        printf("0\n");
    }
    else
    {
        int i = 0;
        int sum = 1;
        for (i = 2; i <= N; i++)
        {
            sum *= i;
        }
        printf("%d\n", sum);
    }
}

int main()
{
    int N;

    scanf("%d", &N);
    Print_Factorial(N);
    return 0;
}
